package com.free.files;

import com.free.exception.SystemException;
import com.free.files.fdfs.FdfsFiler;
import com.free.files.nio.NioFiler;
import jdk.nashorn.internal.ir.IfNode;
import org.apache.commons.lang3.StringUtils;

/**
 * <p>
 * 功能概述:
 * </p>
 * <p>
 * 功能详述:
 * </p>
 */
public class FileManagers {
    /*========================================================================*
     *                         Public Fields (公共属性)
     *========================================================================*/

    /*========================================================================*
     *                         Private Fields (私有属性)
     *========================================================================*/

    private static final FileManagers _instance = new FileManagers();
    private static final ENUM_FILER_OPERATOR FILEROPERATOR = ENUM_FILER_OPERATOR.NIO;

    /*========================================================================*
     *                         Construct Methods (构造方法)
     *========================================================================*/

    private FileManagers(){

    }

    /*========================================================================*
     *                         Public Methods (公有方法)
     *========================================================================*/

    public static IFiler newFiler(String conf) throws SystemException {
        if(StringUtils.isEmpty(conf)){
            return NioFiler.instance();
        }else{
            return FdfsFiler.instance(conf);
        }
    }

    public static IFiler getFiler(ENUM_FILER_OPERATOR operator) throws SystemException {
        if(operator == ENUM_FILER_OPERATOR.NIO){
            return NioFiler.instance();
        }else{
            return FdfsFiler.instance(null);
        }
    }

    public static IFiler getFiler() throws SystemException {
        return getFiler(FILEROPERATOR);
    }


    /*========================================================================*
     *                         Private Methods (私有方法)
     *========================================================================*/



    public enum ENUM_FILER_OPERATOR{
        NIO("nio", 1),FASTDFS("fastdfs",2);

        private String name;

        private int key;

        ENUM_FILER_OPERATOR(String name, int key)
        {
            this.name = name;
            this.key = key;
        }

        public String getName() {
            return name;
        }

        public int getKey() {
            return key;
        }
    }
}
